#include <stdio.h>
#include <unistd.h>
#include <pthread.h>
#include <stdlib.h>

int g_iCounter=0;

void *FunTest( void *arg )
{
    int *piData = arg;
    int i;
    
    for ( i=0; i<3; ++i )
    {
        printf("sub  Thread Running... iData(sub ) = %d g_iCounter = %d\n", *piData, g_iCounter );
        sleep(2);
        (*piData)++;
        g_iCounter++;
//        pthread_exit(0);   //退出本线程
//        exit(0);           //退出进程
    }
}

int main(int argc, char const *argv[])
{
    pthread_t tidFunTest;
    
    int iData = 10;

    pthread_create( &tidFunTest, NULL, FunTest, &iData );

    sleep(1);
//    pthread_exit(0);      //退出主线程，子线程正常运行
//   exit(0);              //退出进程

    while(1)
    {
        printf( "main Thread Running... iData(main) = %d g_iCounter = %d\n", iData, g_iCounter );
        sleep(5);
    }

    return 0;
}

/*
主线程向所创建的子线程传递参数
参数类型为 void* ，主线程和子线程都可以通过指针修改参数值

全局变量，各个线程都可以访问

pthread_exit
exit

*/